package com.miage.itrading.client;

import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.miage.itrading.shared.Util;
import com.miage.itrading.shared.entites.Cotation;

@SuppressWarnings("deprecation")
public class CompanyWidget extends GenericWidget {

	private final GetListesServiceAsync	getListesService	= GWT
																	.create(GetListesService.class);

	private VerticalPanel				menu;

	public CompanyWidget(ItradingAffichage context, String uid) {
		super(context, uid);
	}

	public void ajouter(final Cotation c) {

		menu.clear();

		HTML nom = new HTML();
		HTML cours = new HTML();

		menu.add(nom);
		menu.add(cours);

		nom.setText(c.getNom().toUpperCase() + " (" + c.getMnemonique() + ")");
		if (nom.getText().length() > 15) {
			nom.setText(nom.getText().substring(0, 15));
		} else {
			nom.setText(nom.getText());
		}

		nom.setStylePrimaryName("action-titre");

		cours.setText(c.getCotationCourante() + " ("
				+ Util.variationCoursString(c) + ")");
		cours.setStylePrimaryName(Util.styleVariationCours(c));

		/**
		 * Récupère l'indice avec l'historique complet et l'affiche
		 */
		final AsyncCallback<List<Cotation>> compositionIndice = new AsyncCallback<List<Cotation>>() {

			public void onFailure(Throwable caught) {
				Window.alert("La composition de l'indice " + c.getNom()
						+ " ne peut être affichée pour le moment.");
			}

			public void onSuccess(List<Cotation> result) {
				int nbValeurs = result.size();

				if (nbValeurs > 0) {

					System.out.println("Affichage de l'indice, " + nbValeurs
							+ " valeurs");

					// Options options = Options.create();
					// options.setAllowHtml(true);
					//
					// DataTable data = DataTable.create();
					// data.addColumn(AbstractDataTable.ColumnType.STRING, "Nom");
					// data
					// .addColumn(AbstractDataTable.ColumnType.NUMBER,
					// "Cours");
					// data.addColumn(AbstractDataTable.ColumnType.NUMBER,
					// "Variation");
					//
					// Cotation c;
					//
					// for (int i = 0; i < nbValeurs; ++i) {
					// c = result.get(i);
					//
					// HTML variation = new HTML(Util.variationCoursString(c));
					// variation.setStylePrimaryName(Util
					// .styleVariationCours(c));
					//
					// data.setValue(i, 0, c.getNom());
					//
					// data.setCell(i, 1, c.getCotationCourante(), c
					// .getCotationCourante()
					// + " €", null);
					//
					// data.setCell(i, 1, Util.variationCoursFloat(c),
					// variation.getHTML(), null);
					// }
					//
					// Table table = new Table(data, options);
					// table.setVisible(true);
					//
					// menu.add(table);
				}
			}

		};
		getListesService.getIndiceComposition(c.getIdCotation(),
				compositionIndice);
	}

	public void configureWidget() {

	}

	public Widget createWidget() {
		menu = new VerticalPanel();

		return menu;
	}
}
